#include "Dictionary.h"
#include "Match.h"
#include <vector>

//Hash of Points
#define  FUZ_FACTOR 2 //Using a little bit of error-correction, damping

class HashPoint
{
public:
	double Time; 
	long Hash;

	//Constructor
public:
	HashPoint();
	~HashPoint();
	HashPoint(double Time, long Hash);
	
	//Compute Hash of 4 frequency points
public:
	static long CalculateHash(long f1, long f2, long f3, long f4);

	//Compute Hash of 3 frequency points
	static long CalculateHash(long f1, long f2, long f3);

	//Get Group Hash 3 Points of Highest Magnitude of Spectrogram
	static HashPoint* HashPoint::getGrHash3Point(Dictionary HighPointsSpec, int *);
	
	//Get Group Hash 4 Points of Highest Magnitude of Spectrogram
	static HashPoint* HashPoint::getGrHash4Point(Dictionary HighPointsSpec, int *);

	static std::vector<Match> getMatchHashPoint(HashPoint* dataHashPointsOriginal, int, HashPoint* dataHashPointsRecording, int);

	static std::vector<double> HashPoint::getMatchingNumbers(std::vector<Match> matchArray, double*);
	//static double HashPoint::countTheNumberOfMatchingPoints(std::vector<Match> matchArray);
};